#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "archivos.h"
#include "login.h"
#include "estructuras.h"
#include "empleados.h"


FILE * lee_archivo(char * archivo_path, int modo)
{
	FILE *pf;
   char mod[4];
   strcpy(mod, (modo?"rt+":"rb+"));

   if((pf = fopen(archivo_path, (modo?"rt+":"rb+"))) == NULL)
	{
	   strcpy(mod, (modo?"wt+":"wb+"));
		if((pf = fopen(archivo_path, (modo?"wt+":"wb+"))) == NULL)
		{
			printf("\nNo se pudo crear el archivo %s.", archivo_path);
         system("pause");
			exit(1);
		}
	}

   //TODO: LOGEAR al archivo de log
   printf("\n##LOG##\tArchivo %s leido como %s.", archivo_path, mod);
	return pf;
}

void cierra_archivo(FILE * pf)
{
   fclose(pf);
   printf("\n##LOG##\tArchivo cerrado.");
   //TODO: LOGEAR al archivo de log
}

FILE * lee_archivo_log(char * archivo_path,char* login_path, int modo)
{
	FILE *pf;
 	FILE *log;
   char mod[4];
   strcpy(mod, (modo?"rt+":"rb+"));

  	if((log=fopen(login_path,"a"))==NULL)
   {
      printf("ERROR EN EL ACCESO AL ARCHIVO DE LOGIN");
      getch();
      exit(1);
   }

   if((pf = fopen(archivo_path, (modo?"rt+":"rb+"))) == NULL)
	{
	   strcpy(mod, (modo?"wt+":"wb+"));
		if((pf = fopen(archivo_path, (modo?"wt+":"wb+"))) == NULL)
		{
			printf("\nNo se pudo crear el archivo %s.", archivo_path);
         login_ap(log,archivo_path,mod,0);
         system("pause");
			exit(1);
		}
	}

   login_ap(log,archivo_path,mod,1);
   fclose(log);
	return pf;
}

void guarda_archivo_log(FILE *pf, empleado emp,char *archivo_path, char *login_path)
{
	empleado empLeido;
   FILE *log;
  	if((log=fopen(login_path,"a"))==NULL)
   {
      printf("ERROR EN EL ACCESO AL ARCHIVO DE LOGIN");
      getch();
      exit(1);
   }
	fseek(pf,0L,SEEK_SET);
	fread(&empLeido, sizeof(empleado), 1, pf);
	while(!feof(pf) && empLeido.legajo != emp.legajo)
	{
		fread(&empLeido, sizeof(empleado), 1, pf);
	}
	if(feof(pf))
	{
		fwrite(&emp, sizeof(empleado), 1, pf);
	}
	else
	{
		//Aca hacer la actualizacion debida de cada campo o grabar la nueva estructura
		fseek(pf,(-1L*sizeof(empleado)), SEEK_CUR);
		fwrite(&emp, sizeof(empleado), 1, pf);
	}
   login_guardar(log,archivo_path);
   fclose(log);

}

void cierra_archivo_log(FILE *pf, char *archivo_path, char *login_path)
{
  	FILE *log;
  	if((log=fopen(login_path,"a"))==NULL)
   {
      printf("ERROR EN EL ACCESO AL ARCHIVO DE LOGIN");
      getch();
      exit(1);
   }
   fclose(pf);
   login_cierre(log,archivo_path);
   fclose(log);

}

